package pe.edu.unmsm.fisi.sisconteg.domain.model;

import static javax.persistence.GenerationType.IDENTITY;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * @author Carlos y Marlon
 */
@Entity
@Table(name = "tb_alumno", catalog = "bdsisconteg")
public class Alumno implements java.io.Serializable {

	private long idAlumno;
	private String codigoAlumno;
	private String apPaterno;
	private String apMaterno;
	private String nombres;
	private Long estadoAlumno;
	private String dni;
	private Set<Egresado> egresados = new HashSet<Egresado>(0);

	public Alumno() {
	}

	public Alumno(long idAlumno) {
		this.idAlumno = idAlumno;
	}

	public Alumno(long idAlumno, String codigoAlumno, String apPaterno,
			String apMaterno, String nombres, Long estadoAlumno,
			Set<Egresado> egresados) {
		this.idAlumno = idAlumno;
		this.codigoAlumno = codigoAlumno;
		this.apPaterno = apPaterno;
		this.apMaterno = apMaterno;
		this.nombres = nombres;
		this.estadoAlumno = estadoAlumno;
		this.egresados = egresados;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "C_ID_ALUMNO", unique = true, nullable = false)
	public long getIdAlumno() {
		return this.idAlumno;
	}

	public void setIdAlumno(long idAlumno) {
		this.idAlumno = idAlumno;
	}

	@Column(name = "T_CODIGO_ALUMNO", length = 8)
	public String getCodigoAlumno() {
		return this.codigoAlumno;
	}

	public void setCodigoAlumno(String codigoAlumno) {
		this.codigoAlumno = codigoAlumno;
	}

	@Column(name = "T_APE_PAT_ALUMNO", length = 150)
	public String getApPaterno() {
		return this.apPaterno;
	}

	public void setApPaterno(String apPaterno) {
		this.apPaterno = apPaterno;
	}

	@Column(name = "T_APE_MAT_ALUMNO", length = 150)
	public String getApMaterno() {
		return this.apMaterno;
	}

	public void setApMaterno(String apMaterno) {
		this.apMaterno = apMaterno;
	}

	@Column(name = "T_NOM_ALUMNO", length = 150)
	public String getNombres() {
		return this.nombres;
	}

	public void setNombres(String nombres) {
		this.nombres = nombres;
	}

	@Column(name = "N_ESTADO_ALUMNO", precision = 10, scale = 0)
	public Long getEstadoAlumno() {
		return this.estadoAlumno;
	}

	public void setEstadoAlumno(Long estadoAlumno) {
		this.estadoAlumno = estadoAlumno;
	}
	
	@Column(name = "T_DNI", length = 8)
	public String getDni() {
		return dni;
	}

	public void setDni(String dni) {
		this.dni = dni;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "alumno")
	public Set<Egresado> getEgresados() {
		return this.egresados;
	}

	public void setEgresados(Set<Egresado> egresados) {
		this.egresados = egresados;
	}

}
